#include <stdio.h>
#include <string.h>


// 整形有符号数，三种表示方法：原码、反码、补码
// 原码：
int main()
{       
    int a = 20; // 占4个字节，地址保存的是二进制的补码,转为16进制 14 00 00 00
    //00000000 00000000 00000000 00010100原码
    //00000000 00000000 00000000 00010100反码
    //00000000 00000000 00000000 00010100补码
    int b = -10; // 占4个字节，地址保存的是二进制的补码，转为16进制 f6 ff ff ff
    //10000000 00000000 00000000 00001010原码
    //11111111 11111111 11111111 11110101反码
    //11111111 11111111 11111111 11110110补码

    // 计算机系统中，数值一律用补码表示和存储。 原因是 使用补码可以将符号位和数值域统一处理；
    // 同时加法和减法也可以统一处理(CPU只有加法器)，
    // 此外，补码与原码相互转换，其运算过程是相同的，不需要额外的硬件电路

    // 1 - 1   ->   1 + (-1)
    // 
    int *p = &a;
    printf("p = = = %p\n",p);
    printf("p = = = %d\n",p);
    return 0;
}

// 大小端介绍
// 大端模式：数据的低位保存在内存的高地址中，而数据的高位，保存在内存的低地址中。 大端字节序模式；
// 小端模式：数据的低位保存在内存的低地址中，而数据的高位，保存在内存的高地址中。 小端字节序模式；


